﻿using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Kaskelot.SP.Services;
using System.Collections.Generic;
using Stockholm.SOA.Kaskelot.WCF.DataContracts;
using System.Linq;

namespace Kaskelot.SP.UI.Layouts.Pages
{
	public partial class Test : Microsoft.SharePoint.Publishing.PublishingLayoutPage
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			this.btn_GetByggnader.Click += btn_GetByggnader_Click;
			this.btn_GetByggnad.Click += btn_GetByggnad_Click;
			this.btn_UpdateByggnad.Click += btn_UpdateByggnad_Click;
			this.btn_CreateByggnad.Click += btn_CreateByggnad_Click;
			this.btn_DeleteByggnad.Click += btn_DeleteByggnad_Click;

			if (Page.IsPostBack) return;

			var filterItems = new String[] { "Alla", "Jag är ny!!", "Ute på gatan."};
			this.ddl_filter.DataSource = filterItems;
			this.ddl_filter.DataBind();
		}

		void btn_DeleteByggnad_Click(object sender, EventArgs e)
		{
			using (ByggnadService svc = new ByggnadService())
			{
				//var allaByggnader = svc.SearchByggnader();

				//foreach (Byggnad b in allaByggnader)
				//{
				//	svc.DeleteByggnad(b);
				//}
			}
		}

		void btn_CreateByggnad_Click(object sender, EventArgs e)
		{
			using (ByggnadService svc = new ByggnadService())
			{
				var nyByggnad = new Byggnad() { 
					Id = Guid.NewGuid(), 
					ValId = Guid.NewGuid(), 
					Namn = "Byggnad " + new Random().Next(), 
					Skapad = DateTime.Now, 
					SkapadAv = "En service, coolt va?" 
				};
				svc.CreateByggnad(nyByggnad);
			}
		}

		void btn_UpdateByggnad_Click(object sender, EventArgs e)
		{
			using (ByggnadService svc = new ByggnadService())
			{
				//var list = svc.SearchByggnader();
				//var byggnad = list[new Random().Next(list.Count)];
				//byggnad.BesokAdress = "Ute på gatan.";
				//svc.UpdateByggnad(byggnad);
			}
		}

		void btn_GetByggnad_Click(object sender, EventArgs e)
		{
			using (ByggnadService svc = new ByggnadService())
			{
				//var list = svc.SearchByggnader();
				//var details = new List<ByggnadDetails>();
				//var b = svc.GetByggnad(list[list.Count - 1].Id);

				//details.Add(new ByggnadDetails()
				//{
				//	Namn = b.Namn, 
				//	BesokAdress = b.BesokAdress, 
				//	BesokPostNr = b.BesokPostNr, 
				//	BesokPostOrt = b.BesokPostOrt, 
				//	LeveransAdress = b.LeveransAdress, 
				//	LeveransPostNr = b.LeveransPostNr, 
				//	LeveransPostOrt = b.LeveransPostOrt
				//});

				//this.grd_Results.DataSource = details;
				//this.grd_Results.DataBind();
			}
		}

		void btn_GetByggnader_Click(object sender, EventArgs e)
		{
			//using (ByggnadService svc = new ByggnadService())
			//{
			//	var list = svc.SearchByggnader();
			//	IEnumerable<Byggnad> results = null;
			//	if (ddl_filter.SelectedValue != "Alla")
			//	{
			//		List<Byggnad> lista = new List<Byggnad>();
			//		lista.AddRange(list);

			//		var v1 = lista.Where(b => b.Namn != null && b.Namn.ToUpper().Contains(ddl_filter.SelectedValue.ToUpper()));
			//		var v2 = lista.Where(b => b.BesokAdress != null && b.BesokAdress.ToUpper().Contains(ddl_filter.SelectedValue.ToUpper()));
			//		var v3 = lista.Where(b => b.LeveransAdress != null && b.LeveransAdress.ToUpper().Contains(ddl_filter.SelectedValue.ToUpper()));

			//		var v123 = v1.Union(v2).Union(v3);
			//		var ordered = v123.OrderBy(b => b.Namn, new Comp());

			//		results = ordered;
			//	}
			//	else
			//		results = list;

			//	var res = new List<SearchResult>();
			//	foreach (Byggnad b in results)
			//	{
			//		res.Add(new SearchResult() {
			//			Id = b.Id.ToString(),
			//			Namn = b.Namn, 
			//			Forsamling = "", 
			//			Klar = "Nej", 
			//			Valdistrikt = "", 
			//			Typ = "Röstningslokal", 
			//			Rostningslokal = ""
			//		});
			//	}

			//	this.rep_repeater.DataSource = res;
			//	this.rep_repeater.DataBind();
			//}
		}

		private class Comp : IComparer<string>
		{
			public int Compare(string x, string y)
			{
				if (x.Length == y.Length)
					return String.Compare(x, y);
				else if (x.Length < y.Length)
					return -1;
				else
					return 1;
			}
		}

		public class SearchResult
		{
			public string Id { get; set; }
			public string Namn { get; set; }
			public string Forsamling { get; set; }
			public string Valdistrikt { get; set; }
			public string Typ { get; set; }
			public string Rostningslokal { get; set; }
			public string Klar { get; set; }
		}

		public class ByggnadDetails
		{
			public string Namn { get; set; }

			public string BesokAdress { get; set; }
			public string BesokPostNr { get; set; }
			public string BesokPostOrt { get; set; }

			public string LeveransAdress { get; set; }
			public string LeveransPostNr { get; set; }
			public string LeveransPostOrt { get; set; }
		}
	}
}
